perm filename NOTICE[UP,DOC]18 blob sn#051959 filedate 1973-07-02 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00074 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00007 00002	*25 Feb 1972	NOTICEs	LES
C00009 00003	*9 Jan 1973	NEWS	LES
C00011 00004	*1 JAN 1972	DO	RPH
C00012 00005	*1 JAN 1972	DMAN	REG
C00013 00006	*1 JAN 1972	SPOOLER	REG
C00014 00007	*1 JAN 1972	RSL SL WHAMS BAMS ETC	JHS
C00015 00008	*1 JAN 1972	Keyboard Commands	LES
C00016 00009	*11 APR 1973	INFO	REM
C00017 00010	*1 Jan 1972	FINGER	LES
C00018 00011	*29 Feb 1972	"Sticky PPN's" (RPG, COMPILE)	DCS
C00019 00012	*1 Jan 1972	SAIL Statement Counter Profile	RES
C00020 00013	*2 Mar 1972	CREF Default Listing Device	DCS
C00021 00014	*14 Mar 1972	TV "." and <esc>I Features	DCS
C00022 00015	*23 Mar 1972	TV for III	DCS
C00023 00016	*30 APR 72	FAIL	FW
C00025 00017	*3 JUN 1972	RAID	DCS
C00032 00018	*4 JUN 1972	NEW DISPLAY EDITOR	SRS
C00033 00019	*6 JUN 1972	PUB MANUAL	TES
C00035 00020	*MAR 1972	LOGOUT	REG
C00037 00021	*1969	DDT	WFW
C00044 00022	*FEB 1972	NEW WHO	DCS
C00047 00023	*14 June 1972	VIDEO SWITCH DOCUMENTATION	LES
C00048 00024	*7 July 1972	DOCUMENTATION FILES	LES
C00049 00025	*23 JULY 1972	KLOG	RHT
C00050 00026	*24 Jul 1972	SAIL	DCS,RHT,JRL
C00054 00027	*25 Jul 1972	SPOOLER	REG
C00055 00028	*1 Aug 1972	FORTRAN	REG
C00056 00029	*9 Aug 1972	DATA DISK	FW
C00058 00030	*16 Aug 1972	AP NEWS (APE, HOT)	ME
C00060 00031	*16 AUG 1972	SAIL MATRIX ROUTINES PACKAGE	SHK
C00062 00032	*30 Aug 1972	UUO	SHK
C00063 00033	*4 Sept 1972	AP NEWS (APE, HOT)	ME
C00064 00034	*4 SEP 1972  FILDMP	RPH
C00065 00035	*4 SEP 1972  NEW SAIL	RHT
C00066 00036	*22 SEP 1972	NEW SAIL	RHT,JRL,KVL
C00069 00037	*22 Sept 1972	Upper Segment RAID and DDT	TVR
C00070 00038	*22 Sept 1972	AP NEWS (APE)	ME
C00071 00039	*12 Oct 1972	FAIL	TVR
C00072 00040	*21 Oct 1972	SAIL	JRL,RHT,KVL
C00075 00041	*3 Nov 1972	USER INTERRUPTS	FW
C00076 00042	*3 Nov 1972	VIDEO SWITCH	FW
C00077 00043	*8 Nov 1972	DUMPS	REG
C00078 00044	*8 Nov 1972	PROTECTION	REG
C00079 00045	*11 Nov 1972	SYSTEM	REG
C00080 00046	*26 Nov 1972	FTP	DCS
C00082 00047	*26 Nov 1972	MLISP2	DAV
C00085 00048	*3 Dec 1972	SAIL	RHT
C00088 00049	*12 Dec 72	AP NEWS (APE)	ME
C00090 00050	*12 DEC 72	PUB	TES
C00092 00051	*23 Jan 73	AP NEWS (APE)	ME
C00096 00052	*28 Jan 73	SAIL	JRL
C00098 00053	*1 Feb 73	AP NEWS (APE)	ME
C00099 00054	*22 Feb 1973	FAIL	FW
C00101 00055	*25 FEB 73	COPY	RPH
C00102 00056	*4 MARCH 1973	MLISP	DAV
C00104 00057	*5 MARCH 1973	PUB	TES
C00110 00058	*9 MARCH 1973	MLISP2	DAV
C00115 00059	*16 March 1973	FREEFOROL processes Text Macros	LES
C00116 00060	*21 March 1973	WHERE Command	TVR
C00117 00061	*27 March 1973	TV ↔ E switching	DCS and FW
C00118 00062	*4 April 1973	TALKER, FTP	DCS
C00119 00063	*5 April 1973	PUB	TES
C00120 00064	*8 April 73	APE, AUTOMATIC NOTIFICATION	ME
C00122 00065	*11 APR 73	XGP	REM
C00124 00066	*9 APR 73	APE, AUTOMATIC NOTIFICATION	ME
C00128 00067	*9 May 1973	FAIL	FW
C00130 00068	*19 MAY 1973	MLISP2	DAV
C00131 00069	*22 May 73	MAIL SEND REMIND CANCEL	BH
C00132 00070	*1 JUNE 1973	MLISP2	DAV
C00134 00071	*2 Jun 73	MAIL SEND REMIND CANCEL LATER GRIPE	BH
C00137 00072	*4 Jun 73	MAIL SEND REMIND LATER CANCEL GRIPE	BH
C00138 00073	*19 June 1973	WHOLINE TIME DAYTIME ESCAPE X ESCAPE Q	ME
C00146 00074	*2 July 1973	NOTICEs	ME
C00147 ENDMK
C⊗;
*25 Feb 1972	NOTICEs	LES

This file, kept in  NOTICE[UP,DOC],  is intended  to  function  as  a
computerized  bulletin  board.     System  programmers  and CUSP file
contributors are invited to disseminate  information  concerning  new
programs  and  system  features  by adding notices to this file.  The
format is arbitrary, except that the first line (and only the first
line) should begin with a "*" and should contain three fields in the
form
 *<date><TAB><subject><TAB><programmer initials>
In the date field, the year, month and day may be given in any order
and the year may be abbreviated to 2 digits, but the month must be
given as 3 or more letters.
*9 Jan 1973	NEWS	LES
To get selective listings from the NOTICE file, say "R  NEWS",  which
will respond with an asterisk and expect a query such as
 *March 15
This asks for all notices posted since the ides of March. If the  day
is  omitted,  1  is  assumed;  if  the  month  is omitted, January is
assumed; if the year is omitted  (as  above)  the  last  instance  is
assumed.

 *Nov<TAB>SAIL
is an example of a more general kind if query.   This  asks  for  all
notices  since  last  November  1  that  contain  the  string  "SAIL"
somewhere in the subject field, with any  case  differences  ignored.
The search could be made more specific by saying
 *NOV<TAB>SAIL<TAB>DCS
which delivers only such notices written by Dan Swinehart.

If  the  query begins with a <TAB>, so that the date is omitted, then
all dates will be accepted.   Similarly, the  Subject  field  may  be
omitted. A null query outputs the entire NOTICE file.

If you would like the output to be spooled, type "*" at  the  end  of
your query, e. g.
 *July 4, 1776	Sex*
If you would like to see title lines only, put a "-" at the end.  You
can use both "*" and "-" together in either order.

If you forget all this, type "?<return>" and this notice will  appear
magically.
*1 JAN 1972	DO	RPH
Manual is in DO.RPH[S,DOC].
*1 JAN 1972	DMAN	REG
Dectape manager (PDP-10 format) -- see DMAN.REG[S,DOC].
*1 JAN 1972	SPOOLER	REG
See SPOOL.DOC[S,DOC].
*1 JAN 1972	RSL SL WHAMS BAMS ETC	JHS
Service Level Reservation System -- see RSL[S,DOC]
*1 JAN 1972	Keyboard Commands	LES
To get a summary of line editor  and  other  Monitor  commands,  list
KEY.LES[S,DOC).
*11 APR 1973	INFO	REM

To have access to the REM information system, type "R INFO".
The general form of command is "R INFO;<FILNAM>;<PRETYPE>"
if you are an expert and know what that means.
*1 Jan 1972	FINGER	LES

To get a listing of the names of all users currently  logged  in  and
their locations, say "R FINGER".
*29 Feb 1972	"Sticky PPN's" (RPG, COMPILE)	DCS

   A PPN specification [P,PN] appearing before a file name in an
RPG command string will be used for all subsequent files which
do not specify a PPN explicitly.  This default remains in effect
until another "sticky PPN" is specified.
   As an example, if I am running under [AIL,DCS]:

    COMPILE SAIL=HEAD+DB+[S,AIL]SAIL+SYM+PARSE+PROD[AIL,DCS]+EXPR

would write the output on [AIL,DCS], get HEAD,DB, and PROD from
[AIL,DCS], and get SAIL, SYM, PARSE, and EXPR from [S,AIL].
*1 Jan 1972	SAIL Statement Counter Profile	RES

To find out how to get SAIL to give you execution frequency data for
pieces of your program, list NEWMAN[S,AIL].
*2 Mar 1972	CREF Default Listing Device	DCS

The CREF default listing device has been changed from LPT to DSK.
This change is not made in RPG mode (so that the CREF system
command will still go directly to LPT).
*14 Mar 1972	TV "." and <esc>I Features	DCS

Typing "⊗." (see TVED.DCS[UP,DOC] for notation) will cause the current
page to become a permanent part of the file (like "W" in SOS).  CANCEL
will henceforth bring back this version, not the old one.

To interrupt a "FIND" search prematurely, type <esc>I.  This replaces
the "\<crlf>" method.
*23 Mar 1972	TV for III	DCS
The TV editor (though still officially unsupported) will now run on
both Data-Disk and III.  In fact, you can transfer (by detach/attach)
from one to the other in mid-edit!
*30 APR 72	FAIL	FW
The double arrow character is no longer treated specially
within the comment portion of a line.  When not within a
comment, it is equivalent to a carriage-return, line-feed
pair.  Now, within comments, it prints as itself.
*3 JUN 1972	RAID	DCS
A new version of RAID is on the system.  Since it is compatible with
both Data-Disc and III consoles, I have put it on SYS: as both 
RAID.REL and TVRAID.REL.  Therefore /V, /1V, /H, /1H will all load
the same program.  Later, TVRAID will be phased out (of LOADER, RPG)
and the numeric argument to H and V switches will be ignored.
This version has been tested fairly carefully.  But report any
problems you have to DCS, anyway.  The old files are saved as
RAID.RLO and TVRAID.RLO on [CSP,SYS].

The following things have been changed:
__ There are a few display changes; in particular, the arrow
   conventions of the Data-Disc RAID are now used everywhere.
__ Byte mode input will be displayed in byte mode.
__ Conditional breakpoints now work exactly as advertised.
__ Symbol←Expr, Symbol:, and Symbol<ctrl>K now work properly.
__ All opcodes work on input (incl. ANDCAM, ORCAB, etc.)

The following new features have been added:
__ There are three new entries to the dispatch table preceding
   DDT (JOBDDT → DDT) -- see RAID.ON[S,DOC] for the meaning of
   this table.  The three are:
	DDT-12:	→$RPTCNT	See below
	DDT-11: →$BGDDT		First word of DDT
	DDT-10: →DDTEND		Last word of DDT

__ This is "Version 1" of RAID.  The version is henceforth stored
   in the leftmost 13 bits of JOBDDT.  Since DDT and old RAID
   contain 0 here, you can tell which you have loaded.  This is for
   the benefit of programs which use new features -- they can
   try alternate methods if the Version isn't high enough.
__ If you insert a JSR $I in your program, you will effectively
   place a breakpoint at that location.  You can proceed via <ctrl>P.
   DO NOT single-step or set a breakpoint on this instruction!
   $I is an INTERNAL symbol in RAID.  There is a pointer to it at
   DDT-6.
__ When you type <call>DDT<cr>, RAID will simulate a breakpoint at
   the address specified by JOBOPC.  You can proceed with <ctrl>P.
   Do not expect this to work if you enter DDT before running anything,
   or if your program jumps to DDT (unless it stores a reasonable
   address in JOBOPC first).
__ n<ctrl><meta>S, where n is a number, will execute instructions
   in multi-step mode, as it would if n were absent.  However, no
   change will be made in  the display until:
     1) n instructions have been executed (<ctrl>X'ed subr =1 instr.)
     2) RAID must pause to get instructions at a subroutine call.
     3) You interrupt the stepping by typing something, or a
	breakpoint is encountered.
   After you respond at a type (2) pause, again the display remains
   unchanged until one of the conditions occurs again.  If you
   responded <ctrl>S or <ctrl>X to the pause, the count will be
   exhausted before the display changes again -- barring type (3)
   events.  The remaining count, if any, is always available in 
    $RPTCNT.   This is useful for counting exact numbers of 
     executions in a given routine, etc.
__ Symbol<meta>K obliterates the Symbol.  Unlike <ctrl>K, which
   simply eliminates typout of the symbol, this also makes it
   undefined for typein.  If, for instance, you have two locations
   with the name NM1, do:
	NM2←NM1		Assigns a new name to one of them.
	NM1<meta>K	Deletes this symbol completely.
	NM1;		Reveals value of the other NM1.  Now
			NM2 refers to the first.
__ Macros:
   Address<ctrl>M<letter> defines <ctrl><meta><letter> as
   a macro.  When the macro is invoked, Address (it can be just
   an address or a byte pointer value) will be put in $M-1 (see
   RAID.ON[S,DOC].  This has the effect of evaluating the string
   at Address before evaluating any more keyboard input -- expanding
   the macro.  Be warned that many <ctrl><meta><letter> combinations
   already mean something -- use one you can do without (the macro
   takes precedence).
*4 JUN 1972	NEW DISPLAY EDITOR	SRS

there now exists a new display editor, called ED, available for
experimentation.  to run it, type
 RU ED[S,SRS]
when it starts up, there will be some documentation on the screen.
	ED is presently experimental, and improving.  Features
include:  editing several files at once, splitting screen between
several files or strings, faster than TV in some cases.
*6 JUN 1972	PUB MANUAL	TES

A new version of PUB was put up today with some obscure bugs fixed.
Indexes and headings now work well.  AFTER PAGE does not always
work, but AFTER TEXT is usually equivalent and does work.
If you must use old version, please tell me why! To use it, log in
as 12,TES and RUN PUB.

There is a new manual: SPOOL PUB.TES[S,DOC]/N/B   It is 80 PAGES long, so
if you don't plan to use PUB for a few months, it is advisable to
wait for the SAILON to be printed.  The new manual has an index
and a tutorial for beginners, plus appendices with (untested) examples.
To use PUB for simple purposes, only a portion of the manual needs to be
read.
*MAR 1972	LOGOUT	REG
Recent changes to logout command.

	The logout command is used to terminate a job that was created
by Login, Fork, or Cfork commands.  The usual form of the command is
K or KJOB, typed at monitor level, followed by a carriage return.

	A new command is called KAT, which combines the features of the
K command and the ATtach command.  KAT requires the job number of the
job to which you want to attach.  As in the Attach command, if you
are attaching to a job with a different PPN than the job you are leaving,
you must supply the ppn of the job to which you are attaching.

	Command Formats
	Note that curly backets { and } denote optional
arguments; pointy brackets < and > denote a symbolic item which  should
be replaced by some concrete instantiation of that item.

K or KJOB command:

K{JOB}{/<switch list>}

KA{TTACH} <job number> {[<project name>,<programmer name>{]}}{/<switch list>}

Each command line is terminated by a carriage return.

	The item <switch list> consists of any sequence of letters
chosen from the list below:
	THIS LIST HAS BEEN OMITTED BECAUSE I FORGOT THEM ALL.

For further confusion, consult R. Gorin.
*1969	DDT	WFW
 The following changes have been made to DDT:

 l.  Halfword printout is now of the form  A,,B  instead
     of  (A)B.  Either form may be used on input.  The difference
     is that  A,,B  truncates  A to 18  bits before 
     swapping halves while  (A)B  does not.

 2.  $U is a new output mode.  It is the same as $A$H.
 3.  $F mode will now print normalized floating permit
     numbers as decimal integers.  This means that
     FORTRAN users may, in general, use $F to look at
     all variables and they will be printed correctly 
     either fixed or floating.

 4.  If the address of a string of ASCIZ text is placed
     in $nB+3, then whenever breakpoint  n  is reached,
     DDT will act as if the characters in the string were
     being read from the teletype.  If you are preparing 
     such a string in advance use either  $ or ≠ (≠33 octal)
     for altmode.

 5.  If a  bytepointer to an  asciz  string is placed in
     $M-l, DDT will act as if the characters in the string
     are being read from the teletype.

 6.  $$7" <delimiter> characters <delimiter> will act just
     like an  asciz   statement in MACRO or FAIL,i.e.,
     more than one word will be filled with  asciz for 
     the characters if necessary.  $$" will have a similar
     effect but with sixbit.

 7.  Typing <number>$$P will cause DDT to do an automatic
     proceed  <number>  times instead of forever.

 8.  When printing in  $$  mode, no word will be printed
     out as an I/O instruction (COND, DATAO, CONI, etc.)
     unless the device number is in a special table.  The
     table is  10  words long and is in $I-1, $I-2, etc.
     Simply put device number here to have the appropriate I/O
     instructions printed.

 9.  If an address is placed in  $M-2  then for each character
     DDT wishes to output, a pushj 1,@$M-2 will be executed. 
     This allows output to be redirected to some device 
     other than the TTY.  The character is in register 5.  The
     routine should preserve all AC's and end with a POPJ l,.

10.  In byte mode output ($<number>0), if a size of 0
     is specified, DDT will use a special mark in $M+2.
     The boundry between 1 and 0 bits specifies the size
     of the bytes.  For example, a word containing

		11111111111 00000000000 11100010110001

     would print 2 . 11 bit bytes, 2 3 bit bytes, 2 1 bit
     bytes, a 2 bit bytes, a 3 bit byte, and a 1 bit byte.

11.  Bytes may be input of $<number>%.  This should be
     followed by a string of unsigned octal numbers
     separated by common and terminated by an altmode.  The 
     number of bytes in a word is not integal the last
     byte is treated as if the word were larger 
     (bit number greater than 35).  This makes input compatible
     with output.  A size of  O  uses the mark in $M+2
     as above.

12.  It is now possible to print flag words and  T  type
     instruction (TRUN, TLNN, etc.) with suitable names
     for the bit involved.  In $M+3 a pointer of the following
     form is placed:

				_______
				|            |
    _______      	|             |
$M+3 |  L1 | T0  |		| Table 0    | 
				|            |
				_______
	
				
				_______
				|            |
				| Table 1    |
				|            |
				_______

				_______
				|	     |                
				| Table 2    |
				|	     |                
				_______
     As many tables as desired may be included.  The pointer
     to the last table should have 0 in the left half. Each
     table contains 36 words.  The  nth  word contains the
     RADIX50 for the name of bit n.  $<number>J  mode will
     cause a word to be printed out using the bit names in
     table number.  If an entry for a bit in 0, the numeric
     value will be printed.  A typical word might look like

              foo! baz! 123,, fool! garp! 2

     $J means $0J.  $nL causes the left half to be
     printed in symbolic and the right half to be printed in
	↑STODAT:
     bit mode, using the names of the bits as if they appeared
     in the left half. $<number>V prints the left half in symbolic
     and the right half in bit mode.

13.  You can now transfer to what is pointed to by the left half
     of a word in the same manner as you transfer using <tab>.
     The command is <control>].
*FEB 1972	NEW WHO	DCS
As of 12-9-71:

1. WHO  will  run for about two minutes, then quit.  You can  reset
   this time by issuing commands (see below).

2. Typing <call> does not stop spacewar jobs.  However, after about
   6 seconds of operation after a <call>, the spacewar portion of
   WHO will bomb out (PC EXCEEDS MEM BOUNDS AT 377777).  This will
   be made cleaner if the system types give me some help.

3. WHO commands are now single-character commands.  WHO will not wait
   for a carriage return before executing one.

4. Previously, many lines of the WHO page were lost below the bottom
  of the screen.  WHO now provides a "windowing" feature.   Type  "↑"
  to  move  the  text  up,  so  that the line which did appear at the
  center of the screen now appears at the top.  This reveals  several
  new  lines  at  the  bottom.  A digit preceding the "↑" serves as a
  repeat factor.
 
5. The "↓" command, with optional repeat factor, moves the text down
   by a half-screenful, unless the first line already is displayed.

6. The "E" command causes WHO to quit.  However, the last-drawn screen
   will not be cleared.  So you can look at it.

7. Any other character will cause WHO to clear the screen (revealing
   your old page printer), then quit.
*14 June 1972	VIDEO SWITCH DOCUMENTATION	LES
A  SAILON  describing  the   video   switch   hardware   resides   in
VDS.LES[S,DOC].  A description of keyboard commands and monitor calls
for controlling the switch and DD channel allocation are described in
VIDEO.LES[UP,DOC].  To  get  a  summary of the keyboard commands, say
"HELP DISPLAY" or "SPOOL KEY.LES[UP,DOC]".
*7 July 1972	DOCUMENTATION FILES	LES
Online documentation files are divided into several areas, as follows.
	[P,DOC] contains the compiled version of the lab phone
		directory and other lists of people.
	[UP,DOC] contains user program descriptions (informal).
	[S,DOC] contains SAILONs, which are more formal descriptions
		of programs and hardware.
	[AIM,DOC] contains A. I. Memos, which report research results.
	[BIB,DOC] contains bibliographies of films, theses, SAILONs, etc.
*23 JULY 1972	KLOG	RHT
The KLOG command allows you to switch areas in one line.  Semantically
it is LOGOUT, followed by LOGIN.  The syntax is:

KLOG {/<logout switch>} {ppn spec (as you would type to LOGIN)}

examples 

KLOG 1/RHT

KL/F 1|RHT

KL 
1,RHT
*24 Jul 1972	SAIL	DCS,RHT,JRL
LEAP news

	1. In the past global model users of LEAP were required
	   to have the statement:
		
		REQUIRE -1 NEW_ITEMS;
		
	   in order to inhibit the allocation of various tables
	   for the local leap model. This statement is no longer
	   required. Instead the decision to allocate the tables
	   will be made using the following criteria. The local model
	   tables will be allocated only if any of the programs loaded
	   together to form a single job contain any declared local
	   items ( that is, any items declared without the attribute
	   GLOBAL), or any of the programs contain  the statement:
		
		REQUIRE n NEW_ITEMS;

       	   where "n" is greater that 0.
	   NOTE: this means that all users of local model LEAP must now
	   "require" new_items if they are going to dynamically create
	   non-global items by using the function NEW.(previously an
	   implicit REQUIRE 60 NEW_ITEMS was contained in every program).


	2. LEAP tables are now allocated as part of the SAIL initialization
	   code rather than on the first call to any LEAP subroutine.
	   The tables will be allocated if any of the SAIL programs
	   loaded contain declared items, itemvars, sets, lists or calls
	   to LEAP. This change was made so that datums of items could
	   be utilized before the first call to LEAP.

	3. The type codes for items have been altered. The new codes
	   returned by the TYPEIT function are as follows:

			0 - item deleted or never allocated
			1 - no type (no datum for this item)
			2 - item is bracketed triple
			3 - string
			4 - real
			5 - integer
			6 - set
			7 - list
			8 - procedure
		       16 - string array
		       17 - real array
                       18 - integer array
		       19 - set array
		       20 - list array
		       21 - invalid (runtime has screwed something up)
 	   The very astute user will notice that the only changes are to
	   up the codes for arrays and invalid by 5.

	IMPORTANT NOTE:This unfortunately will necesitate the recompilation
	and reloading of any programs which use array items as the RUNTIME 
	routines also use these type codes.The standard
	compiler  SAIL on [1,3] will have these changes as of 23:59 WED,
	jul26. Therefore if any of your programs use array items you should
	recompile them starting Thurs jul 27. Foist all complaints onto
	Jim Low.
*25 Jul 1972	SPOOLER	REG
SPOOLER NEWS:
	The old spooler '*LIST*' has been removed  from  the  system.
Users of the spooling subroutines described in SPSUB.REG[UP,DOC] will
have to reload with the new libraray.

	The command SPOOLQ has been removed. Instead, use the command
QSPOOL.   This  has the advantage that the command can be abbreviated
to one letter and the SPOOL command to two letters.

	A new SPOOL command is planned. This will allow users to more
fully utilize features of the new spooler.
*1 Aug 1972	FORTRAN	REG
DEC FORTRAN version 25 and LIB40 version 31 have been put up.
Some of the bugs in the compiler / operating system have been
eliminated.
*9 Aug 1972	DATA DISK	FW
Two new features have been added to data disk DPYOUT:

1) Overlapped mode, enabled by bit 0 of header word 0.
   In this mode, a DPYOUT will return without waiting for
   the transfer to be completed (although it will wait
   for any previou transfer), enabling the program to
   continue running. Header+2 will be set nonzero during
   the transfer, and to zero after the transfer is complete,
   so testing this is convenient (which should be done before
   changing the buffer). A DPYOUT with a zero word count will
   wait for a previous transfer without initiating a new one.

2) Double field mode, useful for text output. This is enabled
   by bit 1 of header word 0 and will cause the buffer to be
   transferred twice, once on each field. Header+3 should specify
   the address of the line address command word, which should
   contain the low-order line address as the third command in
   the word. Bit 24 of this word will be set to the proper
   field on each transfer. This feature cannot be used if more
   than one low-order line address command is used.
*16 Aug 1972	AP NEWS (APE, HOT)	ME

We have a line from the Associated  Press  (AP)  over  which  we  get
national  and  international news.  The news that comes in gets filed
on the disk and saved for about 24 hours.

For use in reading the news, there are two programs on the system.

Type "R HOT" to have the news typed on your console as it comes in.

Type "R APE" to be able to selectively read the news that is on file.
The  stories  are catagorized by keywords; to read the news, you type
to APE whatever keywords you want to read about.  To  get  help  when
you are running APE, type "?" and carriage return at any point. For a
list of the keywords, TYPE the file WORDS.SRT[AP,SYS]  or  SPOOL  the
file WORDS.LST[AP,SYS].

For further information, see the file APE.ME[UP,DOC].
*16 AUG 1972	SAIL MATRIX ROUTINES PACKAGE	SHK

Following Matrix Routines Now Available:

1) Real Matrix Multiplication Routine
	Multiplies two n-dimensional matrices (2-dimensional arrays)
	(size  m x n by n x p  to get a  m x p  matrix)
	or multiplies a 1-dimensional matrix by an n-dimensional matrix
	or an n-dimensional matrix by a 1-dimensional.
MATMUL(REAL ARRAY A[a:b,c:d],REAL ARRAY B[c:d,e:f],REAL ARRAY C[a:b,e:f]);
	multiplies A by B and places the result in C
	(MATMUL(A,B,A) and MATMUL(A,B,B) are also valid.)
	The only thing it won't do (I think) is multiply two 1-dimensional
	matrices or n-dimensional arrays (n>2).

2) Array Clear Routine
	MATCLR(REAL (or INTEGER) ARRAY A);
	Zeros the array A.

3) Real Array Multiplied by a Real Constant
	CONMUL(REAL ARRAY A,REAL B);
	Multiplies array A by constant B and places the result in A.

All three are available by saying REQUIRE "MATMUL[4,SHK]" LOAD_MODULE;
*30 Aug 1972	UUO	SHK
There is now a numerical listing of the UUO's - UUO.SHK[S,DOC]
*4 Sept 1972	AP NEWS (APE, HOT)	ME
 The AP news is now spooled once a day (at a somewhat random
 time).  The listing, which will be kept in the conference
 room, will indicate a file name of "APNEWS[AP,SYS]".
*4 SEP 1972  FILDMP	RPH
New program to list files in different formats. See FILDMP.RPH on UP,DOC.
*4 SEP 1972  NEW SAIL	RHT
 EFFECTIVE 1201 AM SAT, 26 AUG, A NEW SAIL SYSTEM  WILL  BE  UP.  ITS
 SEGMENT  WILL  BE  SAISG4.  THIS NEW SYSTEM WILL INCLUDE SEVERAL NEW
 FEATURES, INCLUDING USER REQUESTED  INITIALIZATIONS,  A  LOCATION(X)
 FUNCTION,  AN  IMPLICIT  ARRAY:  MEMORY[0:MEMSIZE], THE RUDIMENTS OF
 MULTIPLE PROCESSES, AND  MUCH  MORE.   WE  WILL  TRY  TO  HAVE  SOME
 DOCUMENTATION READY BY THE LATTER PART OF THE WEEK.
*22 SEP 1972	NEW SAIL	RHT,JRL,KVL
 THE NEW SAIL SYSTEM IS UP. THERE ARE MANY NEW FEATURES INCLUDING
 MULTIPLE-PROCESSES WITHIN JOBS,EVENTS, A LIMITED FORM OF BACKTRACKING
 BETTER FOREACH STATEMENTS, BETTER ERROR RECOVERY ETC.

 THE DOCUMENTATION FOR THE NEW FEATURES IS NOT YET AVAILABLE, BUT
 EXAMPLES OF THE GLORY OF NEW SAIL ARE CONTAINED IN PAPER.DOC[S,JRL]
 NEWFEA.TXT[S,JRL].

 THE NEW SYSTEM USES SAISG4, LIBSA4, HLBSA4, AND FOR YOU GLOBAL
 MODEL HACKERS GLBS10. 

 NO SOURCE LANGUAGE INCOMPATIBILITIES ARE KNOWN, BUT OF COURSE
 ALL PROGRAMS LOADED TOGETHER SHOULD BE COMPILED WITH THE
 NEW COMPILER, AND OLD PROGRAMS SHOULD BE RECOMPILED BEFORE THEYY
 ARE RELOADED.


 OLD DUMP FILES SHOULD CONTINUE TO RUN FOR A WHILE UNTIL
 SAISG3 IS DELETED.

 SEND COMPLAINTS AND BUGS TO S,AIL OR SEE JRL,KVL OR RHT
 A CURRENT LISTING WILL BE APPRECIATED. BETTER SERVICE
 WILL BE GIVEN IF YOU ARE ABLE TO TICKLE THE BUG IN A SMALL
 PROGRAM WITHOUT UNREADABLE MACROS.

 FOR THE NEXT COUPLE DAYS WE WILL KEEP THE PREVIOUS COMPILER
 AROUND AS SAIL.921[1,3], SAILOW.REL AS SAILOW.921, AND
 GLBLOW.REL AS GLBLOW.921.  IF YOU FEEL YOU ARE BEING
 SCREWED BY SOME TERRIBLE BUG, YOU CAN, FOR INSTANCE,
 SAY SOMETHING LIKE
 
 R SAIL.921 <CR>
 * FOO←FOO <CR>
 * LOADER!
 * SAILOW.921[1,3],FOO <ALT>
 
 WHERE THE STARS ARE TYPED BY THE SYSTEM
 
 THIS WILL GIVE YOU THE EFFECT OF DOING 
 
 LOA /COM FOO
 
 USING THE PREVIOUS SYSTEM.  
*22 Sept 1972	Upper Segment RAID and DDT	TVR
RAID or DDT may be retrieved from the disk  and  run  from  an  upper
segment.  This means your core image may contain RAID at a much lower
cost (102 octal words instead of 12200 words for RAID).  For  details
see DEBUG.DOC[1,TVR]
*22 Sept 1972	AP NEWS (APE)	ME
Multiple word keywords are now implemented in APE.  To use them,
separate the individual words with spaces in your keyword exressions.

Also, to have only the first few lines of each story you select
typed out, type an "F" at the beginning of the story selection
line ("Read which one(s)?").  If you use both "F" and "=" on
the same line, the order is irrelevant.  When you use the "F"
feature, you cannot spool or save the stories in a file.

For details on using APE, see the file APE.ME[UP,DOC].
*12 Oct 1972	FAIL	TVR
FAIL has been  changed to stop at each  error and give the  option to
continue to next  error, continue automatically or to edit.  The edit
option will call SOS  if there are line numbers  and E if not  (sorry
TECO hackers).  Any  complaints should be sent to TVR.   If you don't
want  to stop  at  each error,  give FAIL  the switch  (F).   The old
version is FAIL.OLD[1,3].
*21 Oct 1972	SAIL	JRL,RHT,KVL
A new SAIL compiler has been put up to correct bugs reported in the
last few weeks. There should be no incompatibitlies with the preceding
compiler and programs compiled with the previous compiler should
be runable with programs compiled with the new compiler. Thus, there
is no need to recompile or even reload SAIL programs which have
been compiled since SEPT 21.  If you do have a program which
compiled in the last month but doesn't now:
	1. REPORT THE PROBLEM TO A SAIL HACKER - or send
	   a message to AIL, including such details as
	   where a copy of the offending program is and the
	   nature of the SAIL bug.
        2. You may use the previous compiler by
	   R  SAIL.102
           * FOO←FOO
           * <call>
           where  FOO is the name of your sail program and  <call>
	   represents the typing of the CALL button (the stars are
	   typed by the system). The above sequence is equivalent to
	   the system level command:

		COM /COM FOO

A note to users of multiple processes and matching procedures:
	To initialize the multiple process environment the user
        should include the following declaration:

	   EXTERNAL PROCEDURE MAINPR;

	He should also make sure this procedure is called before
        doing any process sprouting or matching procedure calling.
	This is best done by using the REQUIRE INITIALIZATION feature
        or by making:
	   MAINPR;
        The first executable statement of your program.
This initialization will be compiled in, in the near future but until
then the above hack is required.
*3 Nov 1972	USER INTERRUPTS	FW
The PC stored on a memory protect interrupt via the new-style
user interrupt system is now the exact PC stored by the hardware,
rather than being incremented as it used to be. This is consistent
both with the old-style (DEC) user interrupt system and with the
"ILL MEM REF AT USER xxxxxx" typeout. If you really care about
the exact value of this PC, consult me or the PDP-10 flowcharts,
as it is anything but consistent.
*3 Nov 1972	VIDEO SWITCH	FW
The VDSMAP UUO now allows the 6 extra switch channels to be
addressed by setting bit 9 in the AC and putting the channel number
(0-5) in the TTY# field (11-17).
*8 Nov 1972	DUMPS	REG
DART, a new program to back up disk  files  on  tapes,  is  available.
system commands DUMP, RESTORE, TLIST, REWIND, BACKSPACE, ADvANCE all
run DART now, instead of DAEMON (CAUTION: new syntax in some cases).
See DART.REG[UP,DOC].
*8 Nov 1972	PROTECTION	REG
The  file  access  protection  bit  400,  which   formerly   had   no
signifigance,  now  means  'Dump  Never' in DART.  All files that had
used this bit have been renamed without it.
*11 Nov 1972	SYSTEM	REG
The job table JOBQUE in the system now contains either the positive 
or negative value of the queue code of a job. Formerly, it had
always been negative.
*26 Nov 1972	FTP	DCS
A new FTP has been installed with the following features:

 1) You needn't type the MODE, TYPE, or BYTE commands at all
    unless you want to change the defaults of S, I, and 36 resp.
    Changing them is inadvisable since we only support those
    settings.  The defaults will be to the foreign host just
    before the first data transfer.

 2) RSTR clears any DATA connections that the FTP thinks it has
    open.  Sometimes it's wrong.  If you get an indication from
    FTP that a command is illegal because the DATA connection already
    exists, do this command.  It will go away when hacks in FTP
    have been cured.

 3) QUOT sends the rest of the line directly over the net, so you
    can use it to execute other peoples commands which are either
    nonstandard or just unsupported here.  This won't do any good
    if our end has to be involved in the operation, but it is good
    to do things like STAT (status), and HELP at CMU.
 See FTP.DCS[UP,DOC] for "complete" information about our FTP,
 and NIC document 10596 for complete FTP protocol description.
*26 Nov 1972	MLISP2	DAV
A new version of MLISP2 has been put on the system.  An old version
exists and will be around for one week.  The main motivation for
the changes was to fix several serious bugs,
and to clean the language up prior to publishing a manual.
Changes:
	(1) Variable names can no longer be literals (e.g. IF, FOR, ...).
	(2) <IDEXP>, <ADDEDEXPR> have been subsumed by <EXPRESSION>.
	(3) SPECIAL variables now must be declared at translation (PARSE)
		time.  To facilitate this, a new production has been added,
		having the form:	SPECIAL <identifier_list>
		It is strongly suggested that all SPECIAL variables be
		declared at the top of the program using this production.
	(4) ?# in the syntax (to inhibit scanning) should now be just #.
		It no longer takes up a syntax position.
	(5) Setting variables in backtracking contexts is now done with
		real LISP numbers (formerly machine representation).
		A function CONTEXT() gets the current backtracking
		context.  X{CONTEXT()/10 + 3} ← etc. is now legal.
	(6) THE FOLLOWING CHANGE IS TEMPORARY; WILL BE FIXED IN A DAY OR 2:
	(*) Prefixes are more restricted in use; the syntax is
		<PREFIX>  <SIMPEX>  as always, but IF, FOR, CASE, etc.
		are no longer <SIMPEX>'s but are now full <EXPRESSION>'s.
		Thus RETURN IF ..., PRINT CASE ..., etc. no longer work;
		use  RETURN(IF ..., PRINT(CASE ..., etc.
	(7) The syntax of SELECT has been changed.  Use SUCCESSOR instead
		of NEXT, and FINALLY instead of IN WHICH CASE.
		E.g. SELECT CAR(L) FROM L:'(A B C) SUCCESSOR CDR(L)
			UNLESS NULL(L) FINALLY FAILURE()
	(8) MLISP2.PRI now prints as it goes along, instead of at the end.
*3 Dec 1972	SAIL	RHT
A new SAIL system will be put up at 2359 Thursday, 7 Dec 1972
This system will include 
	(1) Leap revisions by JRL.  This means that any programs
		that use LEAP should be recompiled.
	(2) User required initializations will take place as
		the first executable statement of the main
		program (after outer block arrays have been
		initialized). Programs that are loaded
		with any .REL files which have user initializations
		should have their main programs recompiled.
	(3) Hooks into the user interrupt system have been provided.
		Those interested should see Russ Taylor.
	(4) A new kind of declaration has been provided:
		CLEANUP proc1,proc2,proc3;
	    Where proc1, etc. are names of (parameterless)
	    procedures.  The effect of a CLEANUP declaration 
	    is to cause the named procedures to be called
	    whenever the block in which it occurs is exited,
	    whether by falling through the end, doing a go_to,
	    or by any other means.  These procedures will be
	    called before any local arrays, sets, or lists are
	    released.  The calls will take place in the order
 	    specified.  Thus:

		BEGIN
		INTEGER I;
		PROCEDURE FOO;I←1;
		BEGIN
		INTEGER ARRAY X[0:I];
		PROCEDURE BAZ;OUTSTR(CVS(X[I]);
		CLEANUP FOO,BAZ;
		:
		COMMENT NOW WHEN THIS BLOCK IS EXITED, X[1] WILL
			BE PRINTED OUT;

		:
		END;
		END;

	(5) various minor modifications to the process stuff.

The new segment is SAISG5.SEG, the libraries are LIBSA5.REL
& HLBSA5.REL.  

The old compiler will be SAIL.D07[1,3]
*12 Dec 72	AP NEWS (APE)	ME
There is now a full search feature in APE.  If you  type  in  a  word
that  is  not in the keyword dictionary, APE will tell you so and ask
you if you wish a "Full search?".  If you type Y, the news file  will
be  searched  for the specified keyword.  If you type ?, a (complete)
summary of this feature will be typed out (try  it!).   If  you  type
anything else, no search will be done.  You may interrupt a search in
progress by typing any character.  (That means you may not type ahead
during a search.)

Note:   Every  word not in the dictionary causes a separate search to
take place and will require you to say Y to "Full search?".

Special note:  Normally the whole news file is searched, taking 8  to
10   seconds,  but  if  a  non-keyword  is  the  second  part  of  an
intersection (eg, NIXON * JJ), then only the  necessary  stories  are
searched.
*12 DEC 72	PUB	TES
PUBMAC.DFS[1,3] has been edited to correct an error in INDEX creation.
The old version is PUBMAC.OLD[1,3] for a few weeks.

The PUB manual has been deleted from the disk.  The abstract remains
on PUB.TES[S,DOC].  Bound copies are in the SAILON file drawer.

In January, a new-SAIL PUB should be up with several obscure but
annoying bugs removed.  Major restrictions and bugs now known:
	SEND INDEX ⊂ ... ⊃	must be all on one line
	See {PAGE X}		must be followed by a non-word-break
					such as  ) , ; ] .
					but definitely not a SPACE
	NARROW, WIDEN, VARIABLE only work within a block -- not at top-level.
	TURN OFF "}" inside blocks doesn't always work right (just for "}")
	↓_abc_abc_abc_↓ seems not to work right in FILL mode someplaces.
	Footnotes hack a lot, esp. if the page fills up during one.
*23 Jan 73	AP NEWS (APE)	ME
A new version of APE has  been  put  on  the  system.   The  new  APE
includes several changes to input formats, particularly where file or
spooler output is desired.  The file APE.ME[UP,DOC] has been  updated
to  explain  all  the  new  features in detail.  You should read that
file,  especially  pages  4  to  12,  before  trying  to   run   APE.
Alternatively,  you can type a question mark (and carriage return) to
APE at any time to get help.  Here are some of the main changes.

All input lines  must  now  be  ended  with  carriage  returns  (this
includes the "Y" to cause a search).

Input to APE from a command file is now possible (and easy/fun).  The
command file should have the name APE.CMD to be most convenient,  but
any  file name is legal as is (almost) any text file format (SOS, TV,
E, etc.).

A "CHOOSE" feature has been added to allow you to see  the  beginning
of  each  story  and  then  decide if you want to see the rest of the
story.

To get output to a file, you say
	<filename> ←
followed by the usual story selection specification.

To get output to the spooler, you add an "S" to the selection line.

To avoid having stories typed out, for instance when they  are  being
spooled, add a "D" (meaning Dont type 'em) to the selection line.

[ESC] I will interrupt searches as well as typeouts now.

A  couple  of  features  are written up in the documentation although
they are not yet implemented.  (The writeups do say  of  course  that
these features  are  unimplemented.)  The features are:  1) AUTOMATIC
NOTIFICATION, whereby you can be notified whenever a story  comes  in
that  matches a keyword expression you have specified; and 2) typeout
of the keywords  by  which  a  story  has  been  categorized.   These
features  are  written  up  in  the  hope  that  you  will  read  the
descriptions now and will  understand  the  features  when  they  are
implemented.
*28 Jan 73	SAIL	JRL

The item NIC returnedby INTERROGATE when the notice queue is empty,
is now the same as the item UNBOUND used in ? FOREACHES and
matching procedures.
	i.e.
		(NIC=UNBOUND) is TRUE

UNBOUND has a new name BINDIT since we felt the name UNBOUND had
erroneous connotations.

Both NIC and UNBOUND will be allowed for a while, but you should
replace them with BINDIT in your source-files.

Because of these changes programs using NIC, UNBOUND should be
recompiled.

ANY is now an item (though it can't be used in MAKE statements).

So you may now say:
		ITMVR ← ANY;
		ERASE A⊗B≡ ITMVR;
which will have the same effect as 
		ERASE A⊗B≡ANY;
ANY may be an element of a set or list.
All itemvars are originally initialized to ANY.
*1 Feb 73	AP NEWS (APE)	ME
The keyword listing feature has now been implemented.  Add a  "W"  to
the selection line to have the keywords of each story typed out ahead
of the story.
*22 Feb 1973	FAIL	FW
Several changes have been made to FAIL:
1)	CALL names are now automatically OPDEFed as their corresponding
	CALLIs, so CALL is virtually obsolete. This is done dynamically
	so it should always be up to date.
2)	BEND, if given an identifier argument, now checks that argument
	against the name of the block it ends, and generates an error
	message if they mismatch. This can be used as a check on
	BEGIN/BEND phasing.
3)	The symbol $. is now available, which is like . except that it
	refers to the location actually occupied by the current instruction.
	This differs from . inside literals or if a PHASE is in effect.
4)	Declaring a symbol both INTERNAL and EXTERNAL is now an error,
	rather than causing FAIL to drop dead as it used to.
5)	The test for too many BENDs now works properly.
6)	Frequently redefined macros no longer eat up large amounts of core.
*25 FEB 73	COPY	RPH

New copy features:
  1) If you use [p] instead of [p,pn] the current default pn is used.
  2) XGPLIST, new command, equivalent to COPY XGP:←.
  3) New switch for font selects, format:

		/FONT{#n}=<filename>{.ext}{[<p>,<pn>]}

	If no ext is given, FNT is assumed. If no p,pn is given
  XGP,SYS is assumed.The #n is the font id number, if it is left
  out, it is assumed to be 0.
  4) New format for /EXTRA switch, if you use /EXTRA≡n.
  (yes that's an equivalence sign), then n is the number
  of scan lines to skip between text lines, not the number
  of extra line feeds to insert.
*4 MARCH 1973	MLISP	DAV

New version of MLISP is up; old copies will be kept on MLISP.OLD
and MLISPC.OLD on the system for a week or two.  Differences:
  1) A couple of lingering bugs were squashed.
  2) A COMMENT expression was added so that MLISP will accept TV
	format files.  Syntax:
		COMMENT <any characters except ; or unpaired " or %> ;
	It may occur anywhere an expression may be used, e.g.
		A + COMMENT A DUMB PLACE TO PUT IT; B + C
		BEGIN
		COMMENT A BETTER PLACE TO PUT IT;
		A + B + C;
		END;
	The old %...% comment is still around as always.
  3) An updated version of the LISP compiler is included in MLISPC.
  4) Insignificant change: function names are printed horizontally
	instead of vertically.  Don't worry, PRINT is not screwing
	up; that's the way it is supposed to work.
*5 MARCH 1973	PUB	TES

THIS NOTICE IS ABOUT 70 LINES LONG, IN DECREASING ORDER OF
    IMPORTANCE.

A NEW VERSION OF PUB IS UP TODAY WITH MANY REPAIRS AND A
FEW CHANGES.  OLD VERSION IS PUB.OLD.  SEE TES WITH PROBLEMS.

NOTE:  UNTIL THE NEXT VERSION OF PUB IS UP, XGP USERS SHOULD
USE THE "DEVICE TTY" COMMAND OR THE "/T" SWITCH, ESPECIALLY
IF THE PAGE FRAME IS HIGHER THAN 53 LINES.

ABOUT 15 KNOWN BUGS HAVE BEEN FIXED (THANKS TO RKJ AT CMU FOR
A COUPLE OF STICKLERS).  FOOTNOTES SHOULD WORK BETTER;
VARIABLE DECLARATIONS WORK; CROSS-REFERENCES OF THE FORM
"UNIT!" LABEL  NOW WORK; AREA TEXT AND COUNT PAGE CAN ONCE
AGAIN BE DECLARED IN BLOCKS; ROMAN NUMERALS, MOD, MIN, AND,
GROUP BEGIN...END, INSERT...PORTION (WITH NO SENDS), AND SOME
OTHER THINGS NOW WORK WELL.  TRY OUT YOUR FAVORITE BUG.

ONE BUG NOT YET FIXED: SOMETIMES PUB WILL LOOP
WHEN THERE ARE AREAS DECLARED THAT DON'T START AT CHAR 1.
REPORT OTHER BUGS TO TES.

CHANGES AND NEW FEATURES:
(1) TYPEOUT DURING COMPILATION RESEMBLES NEW SAIL'S.
    NOTE: FILES LIKE 3INDE.PUZ AND 2CONT.PUG ARE GENERATED
    FILES.  PAGE 1 OF TV FILES IS NOT REPORTED BY PUB.

(2) THERE IS NO LONGER A BLANK PAGE AT THE BEGINNING OF LPT
    DOCUMENTS.

(3) NEW COMMAND TO CIRCUMVENT CHANGE (2): "BLANK PAGE N" CLOSES
    THE CURRENT PGE AND LEAVES N BLANK PAGES IN THE DOCUMENT.
    THE PAGE COUNTER IS NOT AFFECTED.  IF N IS OMITTED, 1 IS
    ASSUMED.

(4) FOR TTY USERS: INSTEAD OF CURLY BRACKETS AND HORSESHOE
    BRACKETS, YOU CAN NOW USE THE FOLLOWING CHARACTER PAIRS:
        $( MEANS LEFT HORSESHOE (OPEN MACRO)
        )$ MEAN RIGHT HORSESHOE (CLOSE MACRO)
        ]$ MEANS RIGHT BRACE (SWITCH TO TEXT MODE)
    THESE ARE ONLY VALID IN COMMAND MODE AND NEED NOT BE TURNED
    ON.  ON THE OTHER HAND, THE FOLLOWING CONTROL CHARACTERS
    ARE ONLY RECOGNIZED IN TEXT MODE AND MUST BE TURNED ON
    (OTHER CHARACTERS MAY BE TURNED ON FOR THEM):
        $[ MEANS LEFT BRACE (SWITCH TO COMMAND MODE).

(5) NEW FEATURE: TURN ON/OFF TAB FOR "<CHARACTER>" ;;
    AS PUB READS THE MANUSCRIPT, IT SUBSTITUTES FOR EACH "TAB"
    FROM ONE TO EIGHT SPACES.  THIS COMMAND CHANGES PUB SO THAT
    IT SUBSTITUTES THE SINGLE CHARACTER <CHARACTER> INSTEAD.
    THE COMMAND MUST BE FOLLOWED BY TWO SEMICOLONS OR ELSE IT MAY
    NOT TAKE EFFECT ON THE NEXT LINE.  IF IT IS DECLARED IN A BLOCK,
    THE "END" OF THE BLOCK MUST BE FOLLOWED BY TWO SEMICOLONS OR
    THE ORIGINAL MEANING OF TAB MAY NOT REAPPEAR IN TIME FOR THE
    NEXT LINE.

(6) SINGLE SPACE, DOUBLE SPACE, AND TRIPLE SPACE NOW BREAK BEFORE
    CHANGING THE VALUE OF SPREAD, SO THEY TAKE EFFECT IMMEDIATELY.

SUGGESTIONS AND WARNINGS:
(1) "COUNT PAGE" INITIALLIZES THE PAGE COUNTER TO NULL.  IT
    GETS STEPPED TO 1 THE NEXT TIME A PAGE IS OPENED.
    THIS IS WHY THE TITLE PAGE HAS A BLANK PAGE NUMBER.

(2) AREA RE-DECLARATIONS DO NOT TAKE EFFECT UNTIL THE
    CURRENT PAGE IS CLOSED.

(3) IF YOUR DOCUMENT IS LONG, IT IS HELPFUL TO HAVE A SOURCE
    FILE FOR EACH CHAPTER, AND ON EACH DEBUG RUN TO "REQUIRE"
    FROM THE MAIN MANUSCRIPT FILE ONLY THOSE CHAPTER FILES THAT
    YOU ARE TESTING.  GLOBAL MACROS SHOULD APPEAR IN THE MAIN
    FILE OF COURSE.

THE MANUAL HAS NOT BEEN CHANGED, BUT IT IS BACK ON THE DISK
FOR THE BENEFIT OF NET USERS (SEE PUB.TES[S,DOC] FOR DETAILS).
*9 MARCH 1973	MLISP2	DAV

A new version of MLISP2 is up.  Old version is on SYS:MLISP2.OLD for
a week or so.  There have been extensive changes, but most are additions
so that programs shouldn't have to be altered.  The changes:

  1) The code generated in the syntax part of productions is somewhat
	shorter and more efficient.

  2) There is now a way to prevent an identifier in the syntax part of
	a production from being turned into a LITERAL, namely precede it
	with a quote mark (').
	Example:	{IF ...}
	makes IF a LITERAL, as well as generating code to check for it,
	but		{'IF ...}
	just generates the code to check for it.  In fact, any token
	of type identifier, number or delimiter may be included in
	the syntax by preceeding it with the quote mark; previously
	only delimiters could be so included.

  3) Numbers in syntax patterns MUST now be preceeded by the quote
	mark; previously they could occur alone.  This should not
	affect anyone, since I don't know of anyone who+⎇s␈.k↔K~p4(4R↓↓Q%¬##∃β∨K;SπBβ?→α4zI1α<B&2∃ε;⊃α,rR&1εc??C~β#πMε∪↔↔9ε;↔;↔⊗3'k. 4('≡c'∨#&cei↓εα↑"&d)≥βπv!βαVu"&1≥εK∃βv{]β'w#↔K∂F;∨↔∞∪3∃hhP&↔c∞kC3↔≠P&~>∩α:⊗]∧Iα&9∧aα∩=∧r&1α,rβ-∞TIL I = X;
			FOR NEW I IN L DO NIL WHILE I = X;
			DO PRINT(X) UNTIL A=B;
			DO PRINT(X) WHILE A=B;
			WHILE A=B DO PRINT(X);
			UNTIL A=B DO PRINT(X);
	In addition, the code generated by COLLECT in all of the loops
	is now more efficient (generates an NCONC in some cases, rather
	than an APPEND).

  5) The DEFINE expression and the vector operator (⊗) have been
	added to MLISP2 to make it more compatible with MLISP
	(c.f. the MLISP manual).  However, the DEFINE
	expression is not quite as general: only prefix and infix
	functions may be DEFINEd, whereas MLISP would allow any
	symbol to be DEFINEd.
	Syntax:	DEFINE  <dterm>, <dterm>, ..., <dterm>	(at least 1)
		<dterm> ::= <identifier>  PREFIX  [<token>]  [<integer>]
			    <identifier>  <integer>  <integer>
			    <identifier>  <token>  [<integer>  <integer>]
	where [] means optional.
	The integers are binding powers for the function; only one
	binding power, the right binding power, needs to be specified for
	prefixes.  The <token>s are identifiers or delimiters which
	may serve as an abbreviation for the function.
	Examples:	DEFINE NOT PREFIX;
			DEFINE NOT PREFIX ¬;
			DEFINE NOT PREFIX 1000;
			DEFINE PLUS + 350 400;

  6) ONLY FUNCTIONS THAT ARE EXPLICITLY DEFINE'D TO BE PREFIXES MAY
	NOW BE USED AS PREFIXES (I.E. WITHOUT () AROUND THEIR
	ARGUMENT AND WITH THE VECTOR OPERATOR ⊗)!!!  NO MORE USER-DEFINED
	PREFIXES UNLESS EXPLICITLY DEFINE'D!!!
*16 March 1973	FREEFOROL processes Text Macros	LES
Freeforol may be used to  generate  form  letters  or  other fill-in-
the-blanks text.  It is described in FREEFO.LES[UP,DOC].
*21 March 1973	WHERE Command	TVR
Typing  WHERE  <programmer>  will  print  the  status  of  such  jobs
currently logged in.  For  example,  WHERE  NET,GUE  will  WHERE  all
network guests. Like WHO, this also clobbers your core image.
*27 March 1973	TV ↔ E switching	DCS and FW

During transition from TV to E, there will be features available
  in one which are unavailable in the other.  To ease the switch,
  we have installed complementary extend-mode commands:  "ETV"
  in TV, "TV" in E.  Executing it will switch editors (writing 
  current page first, if necessary).   The new editor will be 
  editing the same file, on the same page and line, with the same
   protection (readonly or readwrite).

The "TV" command in E is only a special case of a much more 
   glorious "RUN" feature.  For more information see TV2E.FW[UP,DOC].
*4 April 1973	TALKER, FTP	DCS

In response to the Site: prompt, one can type a site name or
a (decimal) site number -- one way to try to find out the site
name of an otherwise Anonymous site.
*5 April 1973	PUB	TES
Users of Jerry Agin's underground figure macros note:

"MACRO SECREF" et al have a bug which was ignored by old
versions of PUB but now result in the error message:
	"EXTRANEOUS { IN COMMAND LINE"
To fix this, remove both the { and } from these particular
macros.  E.G.:
	.MACRO SECREF ⊂ "Section " ;{SECTION! LBL} ⊃
should be:
	.MACRO SECREF ⊂ "Section " ;SECTION! LBL ⊃

If you like, this can be abbreviated:
	.MACRO SECREF ⊂ "Section!" LBL ⊃
which did not work in old versions but now does!
*8 April 73	APE, AUTOMATIC NOTIFICATION	ME

If you wish to be notified each and every time an AP story  comes  in
that  matches  a given keyword expression, type the expression to APE
and precede it with a dollar sign ($). For example,
	$JUPITER*PIONEER
When a story comes in that matches the expression, you will be sent a
message which you will get when you login.  Also, if you  are  logged
in at the time the story comes in, the message
	*** AP STORY FOUND ***
will be typed on your console.

To see what automatic notification requests you currently have,  type
the  keyword expression "$" (just dollar sign) to APE.  To be able to
delete these requests, type the expression "$$".  Each  request  will
expire  two months after it is submitted. At that time you will get a
message indicating that the request has expired.
*11 APR 73	XGP	REM
	The currently most-useful program for printing  documents  on
the  Xerox  Graphics  Printer  is MRPP3[XGP,REM] (Maas Research Paper
Plotter program, version 3) which allows you to change fonts anywhere
(in the middle of a word if you wish), do paragraph justification and
centering, super-scripts above sub-scripts, nicely-formatted  tabular
listings,  etc.   The  latest  documentation is usually posted on the
bulletin board near the machine room, however if  you  want  you  own
copy here is what you do:
.RU MRPP3[XGP,REM]
FOO.LST←MRPP3.WRU[XGP,REM]
then when it is all finished and you see XG @QQXGP.RPG in  your  line
editor,  hit  carriage return, wait for the device to be available if
it is busy, then collect the approximately three pages as  they  come
out  of the XGP (after the 2 8/10 pages of chard that comes out ahead
of each listing).
*9 APR 73	APE, AUTOMATIC NOTIFICATION	ME

Here are some notes on using Automatic Notification for AP stories.

Automatic  notification (AN)  is  intended to  be used  for  two main
purposes.  1) If you are expecting an urgent story to come in  at any
moment, and you want to be notified as soon as it comes  in (assuming
you are logged in),  automatic notification saves you the  trouble of
running APE every half  hour to find out  if your story has  come in.
2) If you are expecting  a story to come  in some day, but  you don't
know when, then AN saves you the effort of running APE every  day, if
you wouldn't otherwise do so.

If  you find  you are  being notified  about the  same kind  of story
several times a day, and if the stories are not  particularly urgent,
then you  will probably  find that  the normal  use of  APE, possibly
using a command file (see previous section) will be  more convenient.
Also, the more AN requests  there are, the more work  the continually
running special  AP programs have  to do.  However,  you are  free to
choose the method of using APE that best fits your purposes.

One final note on AN: When you get a hit from an AN request, the best
way  to use  APE  to read  the story  is  to type  in  the expression
(possibly using a command file) that got the hit.  Alternatively, you
can  type in  the sequence  number of  the story  found, but  this is
liable to give you an extra story with the same sequence number.  You
can  combine  these  two  methods  and  type  something   like  (say)
"#35*CHESS", if CHESS was the  AN request getting a hit on story #35.
If a story you have been notified about is more than a day or so old,
then you will probably not find it with APE.  However, since the news
is  spooled  every day, you should be able to find old stories in the
stack of listings in the lounge (unless you are a remote user!).  For
even older listings, see ME.

For more details, see APE.ME[UP,DOC], special features 10, 11 and 12.
*9 May 1973	FAIL	FW

Several changes have been made to FAIL:

1)	The CALLI opcode definer has been extended to include all
	UUO opcodes. Thus all existing system calls now have their
	mnemonics predefined in FAIL. Again, this is dynamic, so
	it will continue to be up-to-date with no further changes
	to FAIL itself.

2)	A couple of new symbol constructs are available. One is
	SYM::, which defines SYM as a half-killed label, just
	as in SYM←←EXPR. Also, SYM↑ may be used anywhere SYM is
	legal and will make SYM either EXTERNAL or INTERNAL,
	depending upon whether it is defined in the program.
	Thus SYM↑:: makes SYM a half-killed internal label, etc.
	(N.B.: Any symbol which has been declared EXTERNAL will
	be converted to INTERNAL if and when it is defined.)

3)	The PRGEND statement (from MACRO) is now available to
	allow multiple independent programs to be assembled
	within a single file. This is particularly useful for
	libraries. PRGEND behaves exactly like END, and similarly
	causes a complete assembler restart, except that I/O
	is undisturbed and assembly continues.
*19 MAY 1973	MLISP2	DAV

Two new runtime functions have been added to MLISP2:
	PEEKVAL(integer) - peeks at the integer'th token ahead without
			advancing the scanner, and returns its value
	PEEKTYPE(integer) - peeks at the integer'th token ahead without
			advancing the scanner, and returns its type
The existing runtime function PEEK is equivalent to
		PEEKVAL(1) CONS PEEKTYPE(1)

The MLISP2 manual/report is now available as AI Memo 195.
*22 May 73	MAIL SEND REMIND CANCEL	BH
The SEND command now sends messages to users' consoles, and the
MAIL command sends messages to be received on login (what SEND
used to do).  There is also a REMIND command for delayed messages,
and a CANCEL command to delete reminder requests.  All these
commands are fully documented in MAIL.BH[UP,DOC].
*1 JUNE 1973	MLISP2	DAV

New MLISP2 system up.  Features:

(1) An automatic accounting feature has been added to MLISP2's
	version of LAP.  Any user (or system) function compiled
	into LAP and read in will be included in the accounting
	system.  The accounting system keeps track of the total
	number of times a function is called.  (It adds two
	instructions to every function LAP'ed in:
		AOSA .+1
		0
		<user code>
	).  The counts may be examined, set, and reset.  NOTE:
	interpreter and interpreted functions are not accounted;
	only functions LAP'ed in.

(2) To facilitate the above feature, two new runtime functions
	have been added:
	GETCOUNT(atom) - takes a function name as its argument
		and returns the number of times the function
		has been entered.
	PUTCOUNT(atom, integer) - sets the number of times the
		function has been entered to the integer (usually 0).
*2 Jun 73	MAIL SEND REMIND CANCEL LATER GRIPE	BH
The following nifty features have been added to the MAIL program:
1.  The switch /D on SEND, MAIL, or REMIND will add a line to the
    message containing a list of the destinations.  If your list
    included a file reference, both the file spec and its contents
    will be listed.  Try SEND/D . FOO etc. for the format.
2.  The REMIND system will now run an arbitrary program for you
    if you use the command
	.LATER <filespec> <core> <datime> <count>
    default device DSK (the only other option is SYS), default
    extension DMP.  Datime and count are like REMIND.  Core is
    an optional argument in real angle brackets specifying an
    initial core allocation and/or start address offset as in
    the SWAP UUO, in the format <99K,+77> (decimal and octal).
3.  There is an RPG feature, which reads commands from QQMAI.RPG;
    see MAIL.BH[UP,DOC] for a full description of this and
    related useless features.
4.  The GRIPE command exists to vent your anger at Ralph's
    malfunctions.
5.  REMIND/M or REMIND/S for mail only or send only.
6.  If you are logged in when someone MAILs you a note, you
    get a one-line message ;; →→→ MAIL FOR ppn ←←←.  This
    is also true for mail sent over the net via FTP.
7.  If you type in a long message and get screwed because
    of an error in the destination list or something, you
    can REENTER and edit your command.
All the gory details are in MAIL.BH[UP,DOC], which you
should be sure to read especially if you want to use the
LATER or RPG features.
*4 Jun 73	MAIL SEND REMIND LATER CANCEL GRIPE	BH
The destination list is now checked by MAIL and friends
before asking for the message.  Invalid destinations (i.e.,
non-existent users) get a message; if there are no valid
destinations in the list, the program exits.  Note: SEND
does not check for logged-in users until ater you enter the
message, as before; only the existence of a file directory
is checked ahead of time.
*19 June 1973	WHOLINE TIME DAYTIME ESCAPE X ESCAPE Q	ME

A  new wholine,    new  TIME and  DAYTIME  commands, two  new  ESCAPE
commands and some new TTY monitor commands are up.

------

The new wholine  contains one new time  on the user line;  this time,
called XTIME and  followed on the wholine by an X, is the incremental
run time for the  given job since  the last teletype interaction  and
is shown in  hour, minutes, seconds and ticks.   The number after the
single  quote is ticks.  The single quote  itself is a right quote if
automatic  resetting  of  XTIME  is  enabled  and  a  left  quote  if
automatic resetting is inhibited; see [BRK] X below.

The XTIME is reset whenever the job comes  out of teletype input wait
and  whenever the  job is caused  to run  by a monitor  command other
than CONTINUE.   Thus the RUN, GET,   SAVE, SSAVE,  CORE 0,   FINISH,
START,  REENTER, DDT and all  the RPG monitor commands cause XTIME to
be  reset; and if the  job goes into IOWQ waiting  for input from the
teletype, then the  XTIME will be reset  when the job is  awakened by
teletype input.   However, note that if you have  typed ahead and the
job reads characters from the  teletype without having to wait,  then
your XTIME  will NOT be  reset.  (Monitor  commands that run  the job
will reset XTIME whether or not you have typed ahead.)

------

In order  to allow  flexible use  of this  new incremental run  time,
some  new ESCAPE keyboard  commands have  been added along  with some
new monitor commands.

[BRK]  X inhibits  automatic  resetting of  your  XTIME.   Thus  this
allows your XTIME  to continue accumulating indefinitely.  It will no
longer be  reset  by coming  out  of tty  input  wait or  by  monitor
commands that run the program.

[ESC] X undoes  the effect of [BRK]  X, thus causing XTIME  to resume
being reset at the normal times.

Note that  neither  [ESC] X  nor [BRK]  X  causes any  change in  the
current XTIME.

[ESC] 1 X causes  your XTIME to be reset and  then inhibits automatic
resetting of XTIME.

[BRK] 1  X causes your  XTIME to be  set to your  total run  time and
then inhibits automatic resetting of XTIME.

------

Four new monitor commands have been added to  allow users who are not
on displays to get the effects of the above ESCAPE commands.

TTY UPDATE  does  the same  thing as  [ESC] X,  ie, enables automatic
resetting of your XTIME.

TTY NO UPDATE does the same thing as  [BRK] X, ie, inhibits automatic
resetting of your XTIME.

TTY TIME does the same  thing as [ESC] 1 X, ie, resets your XTIME and
then inhibits automatic resetting.

TTY NO TIME does the same thing as [BRK] 1  X, ie, sets your XTIME to
your total run time and then inhibits automatic resetting.

------

The  TIME command  has  been  modified  to print  out  five  labelled
quantities.   (TIME  still takes  an  optional job  number argument.)
Four of  these  are  times,  which are  printed  in  hours,  minutes,
seconds and ticks (the number after the single quote is ticks).

TOTAL is the total run time for the specified job.

INCREMENT is the old  incremental run time that the  TIME command has
always  printed and reset.   When you  request the TIME  for your own
job, this time is reset (like it always has been).  When  you request
the TIME for  another job, you do NOT cause  his incremental run time
to be reset.

XTIME is the  new XTIME which is explained  above.  The XTIME  is not
changed at all by the TIME command.

WAIT is  the time the  job has  spent waiting for  the system.   This
includes  actual time running as  well as time waiting  to be run and
time waiting for disk  I/O, etc, but does  not include time spent  in
IOWQ waiting for  teletype input, nor time in STOPQ,  NULLQ or INTWQ.
This time also appears on the wholine with the label W.

KCS is the total number of kilo-core-seconds  you have used since you
logged in.   This number is incremented by your  core size (in K) for
every second of runtime.

------

The DAYTIME command  now takes an  optional job number  argument, eg,
"DAYTIM 22".  If the job number  is zero (eg, "DA  0"), then your own
job number is  used. If there  is an argument,  then three times  are
printed:  the time  of  login  of the  specified  job,  the time  the
specified  job  was last  run,  and the  current time.    The DAYTIME
command with no argument does the same thing it used  to do, ie, give
you the day, date and time.

------

[ESC] Q  now gives you  the wholine  for the next  job with the  same
programmer  name as the job  on your current wholine,  or as your own
job if you have no wholine up.

[BRK] Q does  the same thing as [ESC]  Q except that it  searches the
job table backwards.
*2 July 1973	NOTICEs	ME

The news file NOTICE[UP,DOC] is now in E/TV format (and should be
kept that way).  Each writeup is on a separate page so that E's
directory page shows the title lines from all the writeups.  This
will enable a much faster NEWS program to be written soon.